home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / lang / nrcobol_1b.lha / NRCOBOL1b / COBFILES / ADVERTS.COB < prev    next >
Text File  |  1997-06-25  |  23KB  |  522 lines

  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID.   ADVERTS.
  3.       *PROGRAM DISCRIPTION.
  4.       *  A program to print an income report for an advertising agency.
  5.       * The advertisements will be in several different newspapers
  6.       * and will be grouped according to the catergory of ad.
  7.       * The program uses table lookup filess to translate the codes from
  8.       * the input file to report data.
  9.       *
  10.       *AUTHOR.        cHArRiOTt.
  11.       *INSTALLATION.
  12.       *DATE-WRITTEN.  24th AUG 89.
  13.       *DATE-COMPILLED.
  14.       *SECURITY.
  15.        ENVIRONMENT DIVISION.
  16.  
  17.        CONFIGURATION SECTION.
  18.        SOURCE-COMPUTER.   AMSTRAD 1512.
  19.        OBJECT-COMPUTER.
  20.        INPUT-OUTPUT SECTION. 
  21.        FILE-CONTROL.
  22.             SELECT           IN-ADVERT-FILE
  23.             ASSIGN TO        DISK
  24.             ORGANIZATION  IS LINE SEQUENTIAL
  25.             ACCESS MODE   IS SEQUENTIAL
  26.             FILE STATUS   IS WS-FILE-STATUS.
  27.  
  28.             SELECT           IN-NEWSPAPER-NAME
  29.             ASSIGN TO        DISK
  30.             ORGANIZATION IS  INDEXED
  31.             ACCESS MODE  IS  RANDOM
  32.             RECORD KEY   IS  ER-PAPER-CODE
  33.             FILE STATUS  IS  WS-PAPER-FILE-STATUS.
  34.  
  35.             SELECT           IN-ADVERT-TYPE
  36.             ASSIGN TO        DISK
  37.             ORGANIZATION IS  INDEXED
  38.             ACCESS MODE  IS  RANDOM
  39.             RECORD KEY   IS  ER-IN-AD-CODE
  40.             FILE STATUS  IS  WS-AD-TYPE-STATUS.
  41.  
  42.             SELECT           OUT-INCOME-REPORT
  43.             ASSIGN TO        PRINTER
  44.             ORGANIZATION  IS SEQUENTIAL
  45.             ACCESS MODE   IS SEQUENTIAL
  46.             FILE STATUS   IS WS-PRINT-STATUS.
  47.       *
  48.        DATA DIVISION.
  49.        FILE SECTION.
  50.        FD IN-ADVERT-FILE
  51.             LABEL RECORD IS  STANDARD
  52.             VALUE OF FILE-ID IS "ADVERTS.FIL".
  53.        01 ER-ADVERT-FILE.
  54.            03 ER-NEWSPAPER-CODE     PIC X(3).
  55.            03 ER-AD-TYPE-CODE       PIC 9(3).
  56.            03 ER-ACCOUNT-NUMBER     PIC 9(6).
  57.            03 ER-ACCOUNT-NAME       PIC X(20).
  58.            03 ER-NUMBER-OF-LINES    PIC 99.
  59.            03 ER-AD-DURATION        PIC 999.
  60.            03 ER-STARTING-DATE      PIC 9(6).
  61.       *
  62.        FD IN-NEWSPAPER-NAME
  63.             LABEL RECORD IS  STANDARD
  64.             VALUE OF FILE-ID IS "PAPER.NAM".
  65.        01 ER-NEWSPAPER-NAME.
  66.            03 ER-PAPER-CODE         PIC X(3).
  67.            03 ER-PAPER-NAME         PIC X(25).
  68.       *
  69.        FD IN-ADVERT-TYPE
  70.             LABEL RECORD IS  STANDARD
  71.             VALUE OF FILE-ID IS "ADVERT.TYP".
  72.        01 ER-ADVERT-TYPE.
  73.            03 ER-IN-AD-CODE         PIC 9(3).
  74.            03 ER-TYPE-OF-AD         PIC X(20).
  75.            03 ER-PRICE-PER-LINE     PIC 9V99.
  76.       *
  77.        FD OUT-INCOME-REPORT
  78.             LABEL RECORD IS  OMITTED.
  79.        01 PRT-INCOME-REPORT.
  80.            03 FILLER                PIC A(80).
  81.       *
  82.        WORKING-STORAGE SECTION.
  83.        01 WS-ADVERT-FILE.
  84.            03 WS-NEWSPAPER-CODE     PIC X(3).
  85.            03 WS-AD-TYPE-CODE       PIC 9(3).
  86.            03 WS-ACCOUNT-NUMBER     PIC 9(6).
  87.            03 WS-ACCOUNT-NAME       PIC X(20).
  88.            03 WS-NUMBER-OF-LINES    PIC 99.
  89.            03 WS-AD-DURATION        PIC 999.
  90.            03 WS-STARTING-DATE.
  91.               05 WS-STARTING-DAY    PIC 99.
  92.               05 WS-STARTING-MONTH  PIC 99.
  93.               05 WS-STARTING-YEAR   PIC 99.
  94.       *
  95.        01 WS-NEWSPAPER-NAME.
  96.            03 WS-PAPER-CODE         PIC X(3).
  97.            03 WS-PAPER-NAME         PIC X(25).
  98.       *
  99.        01 WS-ADVERT-TYPE.
  100.            03 WS-IN-AD-CODE         PIC 9(3).
  101.            03 WS-TYPE-OF-AD         PIC X(20).
  102.            03 WS-PRICE-PER-LINE     PIC 9V99.
  103.       *
  104.        01 WS-REAL-DATE.
  105.            03 WS-REAL-YEAR          PIC XX.
  106.            03 WS-REAL-MONTH         PIC XX.
  107.            03 WS-REAL-DAY           PIC XX.
  108.        01 WS-TEMP-DATE.
  109.            03 WS-TEMP-DAY           PIC XX.
  110.            03 FILLER                PIC X  VALUE "/".
  111.            03 WS-TEMP-MONTH         PIC XX.
  112.            03 FILLER                PIC X  VALUE "/".
  113.            03 WS-TEMP-YEAR          PIC XX.
  114.       *
  115.        01 WS-COUNTERS.
  116.            03 WS-PAGE-COUNTER           PIC 99.
  117.            03 WS-LINE-COUNTER           PIC 99.
  118.            03 WS-NUMBER-OF-ACCOUNTS     PIC 9999.
  119.            03 WS-AVG-PRICE-PER-LINE     PIC 9999V99.
  120.            03 WS-TOTAL-LINES            PIC 999999.
  121.            03 WS-AVG-NUMBER-OF-LINES    PIC 999999.
  122.            03 WS-INCOME-EARNED          PIC 99999V99.
  123.            03 WS-TOTAL-INCOME-EARNED    PIC 99999V99.
  124.        01 WS-STOP-RUN-FLAG          PIC X   VALUE " ".
  125.        01 WS-END-FILE-FLAG          PIC X   VALUE " ".
  126.        01 WS-ABORT-READ-FLAG        PIC X   VALUE " ".
  127.        01 WS-FILE-STATUS            PIC XX  VALUE "00".
  128.        01 WS-PAPER-FILE-STATUS      PIC XX  VALUE "00".
  129.        01 WS-AD-TYPE-STATUS         PIC XX  VALUE "00".
  130.        01 WS-PRINT-STATUS           PIC XX  VALUE "00".
  131.        01 WS-RESPONCE               PIC X.
  132.            88  WS-RESPONCE-Q        VALUE  "Q" "q".
  133.            88  WS-RESPONCE-P        VALUE  "P" "p".
  134.            88  WS-RESPONCE-S        VALUE  "S" "s".
  135.            88  WS-RESPONCE-YN       VALUE  "Y" "N"
  136.                                            "y" "n".
  137.            88  WS-RESPONCE-Y        VALUE  "Y" "y".
  138.            88  WS-RESPONCE-N        VALUE  "N" "n".
  139.       *
  140.        01 PRINT-PROG-TITLE.
  141.            03 WS-PRT-TEMP-DATE       PIC X(8).
  142.            03 FILLER                 PIC X(14) VALUE SPACES.
  143.            03 FILLER                 PIC X(36) VALUE
  144.            "CLASSIFIED ADVERTISING INCOME REPORT".
  145.            03 FILLER                 PIC X(7)  VALUE SPACES.
  146.            03 FILLER                 PIC X(5)  VALUE "PAGE ".
  147.            03 WS-PRT-PAGE-COUNTER    PIC 99.
  148.        01 PRINT-RECORD.
  149.            03 PRT-PAPER-NAME.
  150.               05 FILLER   PIC X(5)   VALUE SPACES.
  151.               05 FILLER   PIC X(26)  VALUE "NEWSPAPER NAME          : ".
  152.               05 WS-PRT-PAPER-NAME   PIC X(25).
  153.            03 PRT-TYPE-OF-AD.
  154.               05 FILLER   PIC X(5)   VALUE SPACES.
  155.               05 FILLER   PIC X(26)  VALUE "TYPE OF ADVERT          : ".
  156.               05 WS-PRT-TYPE-OF-AD   PIC X(20).
  157.            03 PRT-ACCOUNT-NUMBER.
  158.               05 FILLER   PIC X(5)   VALUE SPACES.
  159.               05 FILLER   PIC X(26)  VALUE "ACCOUNT NUMBER          : ".
  160.               05 WS-PRT-ACCOUNT-NUMBER  PIC 9(6).
  161.            03 PRT-ACCOUNT-NAME.
  162.               05 FILLER   PIC X(5)   VALUE SPACES.
  163.               05 FILLER   PIC X(26)  VALUE "ACCOUNT NAME            : ".
  164.               05 WS-PRT-ACCOUNT-NAME PIC X(20).
  165.            03 PRT-NUMBER-OF-LINES.
  166.               05 FILLER   PIC X(5)   VALUE SPACES.
  167.               05 FILLER   PIC X(26)  VALUE "NUMBER OF LINES         : ".
  168.               05 WS-PRT-NUMBER-OF-LINES PIC Z9.
  169.            03 PRT-AD-DURATION.
  170.               05 FILLER   PIC X(5)   VALUE SPACES.
  171.               05 FILLER   PIC X(26)  VALUE "ADVERT'S DURATION (DAYS): ".
  172.               05 WS-PRT-AD-DURATION  PIC ZZ9.
  173.            03 PRT-PRICE-PER-LINE.
  174.               05 FILLER   PIC X(5)   VALUE SPACES.
  175.               05 FILLER   PIC X(29)  VALUE "PRICE PER LINE          : ".
  176.               05 WS-PRT-PRICE-PER-LINE PIC $9.99.
  177.            03 PRT-INCOME-EARNED.
  178.               05 FILLER   PIC X(5)   VALUE SPACES.
  179.               05 FILLER   PIC X(26)  VALUE "INCOME EARNED           : ".
  180.               05 WS-PRT-INCOME-EARNED  PIC $$$$9.99.
  181.        01 PRINT-TOTALS.
  182.            03 PRT-NUMBER-OF-ACCOUNTS.
  183.               05 FILLER   PIC X(5)   VALUE SPACES.
  184.               05 FILLER   PIC X(28)  VALUE "NUMBER OF ACCOUNTS      : ".
  185.               05 WS-PRT-NUMBER-OF-ACCOUNTS PIC ZZZ9.
  186.            03 PRT-AVG-NUMBER-OF-LINES.
  187.               05 FILLER   PIC X(5)   VALUE SPACES.
  188.               05 FILLER   PIC X(26)  VALUE "AVERAGE NUMBER OF LINES : ".
  189.               05 WS-PRT-AVG-NUMBER-OF-LINES PIC ZZZZZ9. 
  190.            03 PRT-AVG-PRICE-PER-LINE.
  191.               05 FILLER   PIC X(5)   VALUE SPACES.
  192.               05 FILLER   PIC X(27)  VALUE "AVERAGE PRICE PER LINE  : ".
  193.               05 WS-PRT-AVG-PRICE-PER-LINE      PIC $$$9.99.
  194.            03 PRT-TOTAL-INCOME-EARNED.
  195.               05 FILLER   PIC X(5)   VALUE SPACES.
  196.               05 FILLER   PIC X(26)  VALUE "TOTAL INCOME EARNED     : ".
  197.               05 WS-PRT-TOTAL-INCOME-EARNED     PIC $$$$9.99.
  198.       *
  199.        SCREEN SECTION.
  200.        01 BLANK-SCREEN.
  201.            03 BLANK SCREEN.
  202.        01 PROG-DISCRIPTION.
  203.            03 LINE 1 COLUMN 5      VALUE 
  204.            "A PROGRAM TO PRODUCE CLASSIFIED ADVERTISING INCOME REPORT".
  205.        01 DIS-PROG-TITLE.
  206.            03 LINE 3 COLUMN 1   PIC X(8) FROM WS-TEMP-DATE.
  207.            03 LINE 3 COLUMN 22     HIGHLIGHT VALUE
  208.                                "CLASSIFIED ADVERTISING INCOME REPORT".
  209.            03 LINE 3 COLUMN 65     VALUE "PAGE ".
  210.            03 LINE 3 COLUMN 70  PIC X(8) FROM WS-PAGE-COUNTER.
  211.        01 DIS-RECORD.
  212.            03 LINE 6  COLUMN 5      VALUE "NEWSPAPER NAME          : ".
  213.            03 LINE 6  COLUMN 31 PIC X(25) FROM  WS-PAPER-NAME.
  214.            03 LINE 7  COLUMN 5      VALUE "TYPE OF ADVERT          : ".
  215.            03 LINE 7  COLUMN 31 PIC X(20) FROM  WS-TYPE-OF-AD.
  216.            03 LINE 8  COLUMN 5      VALUE "ACCOUNT NUMBER          : ".
  217.            03 LINE 8  COLUMN 31 PIC 9(6) FROM  WS-ACCOUNT-NUMBER.
  218.            03 LINE 9  COLUMN 5      VALUE "ACCOUNT NAME            : ".
  219.            03 LINE 9  COLUMN 31 PIC X(20) FROM  WS-ACCOUNT-NAME.
  220.            03 LINE 10 COLUMN 5      VALUE "NUMBER OF LINES         : ".
  221.            03 LINE 10 COLUMN 31 PIC 99 FROM  WS-NUMBER-OF-LINES.
  222.            03 LINE 11 COLUMN 5      VALUE "ADVERT'S DURATION (DAYS): ".
  223.            03 LINE 11 COLUMN 31 PIC 999 FROM  WS-AD-DURATION.
  224.            03 LINE 12 COLUMN 5      VALUE "PRICE PER LINE          : $".
  225.            03 LINE 12 COLUMN 32 PIC 9V99 FROM  WS-PRICE-PER-LINE.
  226.            03 LINE 13 COLUMN 5      VALUE "INCOME EARNED           : $".
  227.            03 LINE 13 COLUMN 32 PIC 9(5)V99 FROM  WS-INCOME-EARNED.
  228.            03 LINE 15 COLUMN 5      VALUE "RECORD NUMBER           :  ".
  229.            03 LINE 15 COLUMN 31 PIC 9(4)    FROM  WS-NUMBER-OF-ACCOUNTS.
  230.        01 DIS-TOTALS.
  231.            03 LINE 19 COLUMN 5      VALUE "NUMBER OF ACCOUNTS      : ".
  232.            03 LINE 19 COLUMN 31 PIC 9(4) FROM WS-NUMBER-OF-ACCOUNTS.
  233.            03 LINE 20 COLUMN 5      VALUE "AVERAGE NUMBER OF LINES : ".
  234.            03 LINE 20 COLUMN 31 PIC 9(6) FROM WS-AVG-NUMBER-OF-LINES.
  235.            03 LINE 21 COLUMN 5      VALUE "AVERAGE PRICE PER LINE  : $".
  236.            03 LINE 21 COLUMN 32 PIC 9(4)V99 FROM WS-AVG-PRICE-PER-LINE.
  237.            03 LINE 22 COLUMN 5      VALUE "TOTAL INCOME EARNED     : $".
  238.            03 LINE 22 COLUMN 32 PIC 9(5)V99 FROM WS-TOTAL-INCOME-EARNED.
  239.        01 MENU.
  240.            03 LINE 8  COLUMN 33    UNDERLINE  VALUE "MENU".
  241.            03 LINE 13 COLUMN 22    VALUE "PRESS 'P' to list to PRINTER".
  242.            03 LINE 15 COLUMN 22    VALUE "      'S' to list to SCREEN ".
  243.            03 LINE 17 COLUMN 22    VALUE "      'Q' to quit    MENU   ".
  244.        01 MENU-INPUT.
  245.            03 LINE 20 COLUMN 22    PIC X TO WS-RESPONCE AUTO.
  246.        01 TASK-RUNING.
  247.            03 LINE 23 COLUMN 5     HIGHLIGHT VALUE 
  248.                                             "REPORT NOW BEING PRINTED". 
  249.        01 PROG-FINISH.
  250.            03 LINE 25 COLUMN 1     BLANK LINE.
  251.            03 LINE 25 COLUMN 5     VALUE "TASK COMPLEATE".
  252.        01 ANY-KEY.
  253.            03 LINE 25 COLUMN 48    PIC X TO WS-RESPONCE AUTO.
  254.        01 RESPONCE-LINE.
  255.            03 LINE 25 COLUMN 5     VALUE 
  256.               "PRINT ANY KEY TO CONTINUE ('Q' TO QUIT) > ".
  257.       * 
  258.        01 ERROR-MESSAGES.
  259.            03 LINE 23 COLUMN 5  VALUE 
  260.                      "FILE WOULD NOT OPEN :ADS:PAP:TYP:PRT:".
  261.            03 LINE 24 COLUMN 5  VALUE 
  262.                      "STATUS ERROR CODES  :   :   :   :   :".
  263.            03 LINE 24 COLUMN 26  HIGHLIGHT  PIC XX
  264.               FROM WS-FILE-STATUS.
  265.            03 LINE 24 COLUMN 30  HIGHLIGHT  PIC XX
  266.               FROM WS-PAPER-FILE-STATUS.
  267.            03 LINE 24 COLUMN 34  HIGHLIGHT  PIC XX
  268.               FROM WS-AD-TYPE-STATUS.
  269.            03 LINE 24 COLUMN 38  HIGHLIGHT  PIC XX
  270.               FROM WS-PRINT-STATUS.
  271.       *
  272.        PROCEDURE DIVISION.
  273.       *
  274.       *****************************************************
  275.       *  This paragraph opens all files for either input or output.
  276.       * These files are then tested for errors.An error message is
  277.       * displayed and the program terminated if any errors are found
  278.       * other wise 1000-DISPLAY is performed until WS-STOP-RUN-FLAG
  279.       * equals "S".
  280.       *
  281.        0000-MAIN.
  282.            OPEN INPUT  IN-ADVERT-FILE.
  283.            OPEN INPUT  IN-NEWSPAPER-NAME.
  284.            OPEN INPUT  IN-ADVERT-TYPE.
  285.            OPEN OUTPUT OUT-INCOME-REPORT.
  286.                 IF WS-FILE-STATUS       = "00"  AND
  287.                    WS-PAPER-FILE-STATUS = "00"  AND
  288.                    WS-AD-TYPE-STATUS    = "00"  AND
  289.                    WS-PRINT-STATUS      = "00"
  290.                          PERFORM 1000-DISPLAY 
  291.                                  UNTIL WS-STOP-RUN-FLAG = "S"
  292.                    ELSE
  293.                          DISPLAY ERROR-MESSAGES.
  294.            CLOSE IN-ADVERT-FILE.
  295.            CLOSE IN-NEWSPAPER-NAME.
  296.            CLOSE IN-ADVERT-TYPE.
  297.            CLOSE OUT-INCOME-REPORT.
  298.            STOP RUN.
  299.       *
  300.       **********************************************************
  301.       *  This paragraph displays the program's discription, accepts
  302.       * the system's date then display's a MENU for the user's input.
  303.       * Acceptable input are 'Q' to quit the praragraph and program,
  304.       * 'S' to display the income report on the screen until the
  305.       * end file flag is equal to 'S' or 'P' to display the the income
  306.       * report on the printer, again until the end file flag  equal 'S'.
  307.       *  Note the IN-ADVERT-FILE is closed and opened at the end of this
  308.       * file so that the file pointer is again set to the start of this
  309.       * file.
  310.       *
  311.        1000-DISPLAY.
  312.            MOVE ZEROS TO WS-COUNTERS.
  313.            MOVE SPACE TO WS-END-FILE-FLAG.
  314.            DISPLAY BLANK-SCREEN.
  315.            DISPLAY PROG-DISCRIPTION.
  316.            ACCEPT WS-REAL-DATE FROM DATE.
  317.            MOVE WS-REAL-DAY   TO WS-TEMP-DAY.
  318.            MOVE WS-REAL-MONTH TO WS-TEMP-MONTH.
  319.            MOVE WS-REAL-YEAR  TO WS-TEMP-YEAR.
  320.            DISPLAY DIS-PROG-TITLE. 
  321.  
  322.            DISPLAY MENU.
  323.            ACCEPT  MENU-INPUT.
  324.            IF WS-RESPONCE-Q
  325.                  MOVE "S" TO WS-STOP-RUN-FLAG
  326.                  DISPLAY PROG-FINISH
  327.              ELSE
  328.              IF WS-RESPONCE-S
  329.                    PERFORM 1100-DISPLAY-FILE
  330.                                 UNTIL WS-END-FILE-FLAG = "S"
  331.                ELSE
  332.                IF WS-RESPONCE-P
  333.                      DISPLAY TASK-RUNING
  334.                      PERFORM 1210-PRINT-TITLE
  335.                      PERFORM 1200-PRINT-FILE   
  336.                                   UNTIL WS-END-FILE-FLAG = "S".
  337.            CLOSE      IN-ADVERT-FILE.
  338.            OPEN INPUT IN-ADVERT-FILE.
  339.       *
  340.       **********************************************************
  341.       *  This paragraph display the contents of IN-ADVERT-FILE to the
  342.       * screen until WS-END-FILE-FLAG IS 'S', this can be forced by
  343.       * returning 'Q' for quit at the responce line prompt. The
  344.       * pararagraph performs 1300-READ-FILE to read all files into
  345.       * working storage, these are then displayed to screen by  DISPLAY
  346.       * DIS-RECORD. At the file end or when forced, the file's totals
  347.       * are displayed to the screen by DISPLAY DIS-TOTALS.
  348.       *
  349.        1100-DISPLAY-FILE.
  350.            PERFORM 1300-READ-FILE.
  351.            IF WS-END-FILE-FLAG NOT EQUAL  "S"
  352.                 PERFORM 1110-DISPLAY-TITLE
  353.                 ADD 1 TO WS-NUMBER-OF-ACCOUNTS
  354.                 ADD WS-NUMBER-OF-LINES TO WS-TOTAL-LINES
  355.                 MULTIPLY WS-NUMBER-OF-LINES BY WS-PRICE-PER-LINE
  356.                                        GIVING  WS-INCOME-EARNED
  357.                 ADD WS-INCOME-EARNED TO WS-TOTAL-INCOME-EARNED
  358.                 DISPLAY DIS-RECORD
  359.                 DISPLAY RESPONCE-LINE
  360.                 ACCEPT ANY-KEY.
  361.                 IF WS-RESPONCE-Q MOVE "S" TO WS-END-FILE-FLAG.
  362.  
  363.                 IF WS-END-FILE-FLAG EQUAL "S"
  364.                       DIVIDE WS-TOTAL-LINES BY WS-NUMBER-OF-ACCOUNTS
  365.                                        GIVING WS-AVG-NUMBER-OF-LINES
  366.                       DIVIDE WS-TOTAL-INCOME-EARNED BY WS-TOTAL-LINES
  367.                                        GIVING WS-AVG-PRICE-PER-LINE
  368.                       DISPLAY DIS-TOTALS
  369.                       DISPLAY RESPONCE-LINE
  370.                       ACCEPT ANY-KEY.
  371.       *
  372.       **********************************************************
  373.       *  This paragraph increments the page counter then display's 
  374.       * the date, program title and page number by DISPLAY DIS-TITLE.
  375.       *
  376.        1110-DISPLAY-TITLE.
  377.            DISPLAY BLANK-SCREEN.
  378.            DISPLAY PROG-DISCRIPTION.
  379.            ADD 1 TO WS-PAGE-COUNTER.
  380.            DISPLAY DIS-PROG-TITLE.
  381.       *
  382.       **********************************************************
  383.       *  This paragraph display the contents of IN-ADVERT-FILE to the
  384.       * printer until WS-END-FILE-FLAG IS 'S'. The pararagraph performs
  385.       * 1300-READ-FILE to read all files into working storage, these
  386.       * are then displayed to the printer by perform 1220-PRINT-RECORD.
  387.       * At the file's end  the file's totals are displayed to the screen
  388.       * by perform 1230-PRINT-TOTALS. NOTE 1210-PRINT-TITLE is performed
  389.       * initially by the calling paragraph and then when WS-LINE-COUNTER
  390.       * is greater than 55. 
  391.       *
  392.        1200-PRINT-FILE.
  393.            PERFORM 1300-READ-FILE.
  394.            IF WS-END-FILE-FLAG NOT EQUAL  "S"
  395.                  ADD 1 TO WS-NUMBER-OF-ACCOUNTS
  396.                  ADD WS-NUMBER-OF-LINES TO WS-TOTAL-LINES
  397.                  MULTIPLY WS-NUMBER-OF-LINES BY WS-PRICE-PER-LINE
  398.                                         GIVING  WS-INCOME-EARNED
  399.                  ADD WS-INCOME-EARNED TO WS-TOTAL-INCOME-EARNED
  400.  
  401.                  IF WS-LINE-COUNTER GREATER 55
  402.                         PERFORM 1210-PRINT-TITLE
  403.                         PERFORM 1220-PRINT-RECORD
  404.                    ELSE
  405.                         PERFORM 1220-PRINT-RECORD
  406.  
  407.             ELSE
  408.                  DIVIDE WS-TOTAL-LINES BY WS-NUMBER-OF-ACCOUNTS
  409.                                    GIVING WS-AVG-NUMBER-OF-LINES
  410.                  DIVIDE WS-TOTAL-INCOME-EARNED BY WS-TOTAL-LINES
  411.                                    GIVING WS-AVG-PRICE-PER-LINE
  412.                  PERFORM 1230-PRINT-TOTALS.
  413.       *
  414.       **********************************************************
  415.       *  This paragraph increments the page counter then display's 
  416.       * the date, program title and page number by DISPLAY DIS-TITLE.
  417.       *
  418.        1210-PRINT-TITLE.
  419.            ADD 1 TO WS-PAGE-COUNTER.
  420.            MOVE SPACES TO PRT-INCOME-REPORT.
  421.            MOVE WS-TEMP-DATE TO WS-PRT-TEMP-DATE.
  422.            MOVE WS-PAGE-COUNTER TO WS-PRT-PAGE-COUNTER.
  423.            MOVE PRINT-PROG-TITLE TO PRT-INCOME-REPORT.
  424.            WRITE PRT-INCOME-REPORT AFTER PAGE.
  425.            MOVE 1 TO WS-LINE-COUNTER.
  426.       *
  427.       **********************************************************
  428.       *  This paragraph sends the data of the required fields to
  429.       * the printer, then incrementes WS-LINE-COUNTER by 8.
  430.       *
  431.        1220-PRINT-RECORD.
  432.            MOVE SPACES TO PRT-INCOME-REPORT.
  433.            MOVE WS-PAPER-NAME  TO WS-PRT-PAPER-NAME.
  434.            MOVE PRT-PAPER-NAME TO PRT-INCOME-REPORT.
  435.            WRITE PRT-INCOME-REPORT AFTER 2.
  436.  
  437.            MOVE SPACES TO PRT-INCOME-REPORT.
  438.            MOVE WS-TYPE-OF-AD  TO WS-PRT-TYPE-OF-AD.
  439.            MOVE PRT-TYPE-OF-AD TO PRT-INCOME-REPORT.
  440.            WRITE PRT-INCOME-REPORT AFTER 1.
  441.  
  442.            MOVE SPACES TO PRT-INCOME-REPORT.
  443.            MOVE WS-ACCOUNT-NUMBER  TO WS-PRT-ACCOUNT-NUMBER.
  444.            MOVE PRT-ACCOUNT-NUMBER TO PRT-INCOME-REPORT.
  445.            WRITE PRT-INCOME-REPORT AFTER 1.
  446.  
  447.            MOVE SPACES TO PRT-INCOME-REPORT.
  448.            MOVE WS-ACCOUNT-NAME  TO  WS-PRT-ACCOUNT-NAME.
  449.            MOVE PRT-ACCOUNT-NAME TO PRT-INCOME-REPORT.
  450.            WRITE PRT-INCOME-REPORT AFTER 1.
  451.  
  452.            MOVE SPACES TO PRT-INCOME-REPORT.
  453.            MOVE WS-NUMBER-OF-LINES  TO WS-PRT-NUMBER-OF-LINES.
  454.            MOVE PRT-NUMBER-OF-LINES TO PRT-INCOME-REPORT.
  455.            WRITE PRT-INCOME-REPORT AFTER 1.
  456.  
  457.            MOVE SPACES TO PRT-INCOME-REPORT.
  458.            MOVE WS-AD-DURATION  TO WS-PRT-AD-DURATION.
  459.            MOVE PRT-AD-DURATION TO PRT-INCOME-REPORT.
  460.            WRITE PRT-INCOME-REPORT AFTER 1.
  461.  
  462.            MOVE SPACES TO PRT-INCOME-REPORT.
  463.            MOVE WS-PRICE-PER-LINE  TO WS-PRT-PRICE-PER-LINE.
  464.            MOVE PRT-PRICE-PER-LINE TO PRT-INCOME-REPORT.
  465.            WRITE PRT-INCOME-REPORT AFTER 1.
  466.  
  467.            MOVE SPACES TO PRT-INCOME-REPORT.
  468.            MOVE WS-INCOME-EARNED  TO  WS-PRT-INCOME-EARNED.
  469.            MOVE PRT-INCOME-EARNED TO  PRT-INCOME-REPORT.
  470.            WRITE PRT-INCOME-REPORT AFTER 1.
  471.  
  472.            ADD 8 TO WS-LINE-COUNTER.
  473.       *
  474.       **********************************************************
  475.       *  This papragraph sends the required total fields to the printer.
  476.       *
  477.        1230-PRINT-TOTALS.
  478.            MOVE SPACES TO PRT-INCOME-REPORT.
  479.            MOVE WS-NUMBER-OF-ACCOUNTS  TO WS-PRT-NUMBER-OF-ACCOUNTS.
  480.            MOVE PRT-NUMBER-OF-ACCOUNTS TO PRT-INCOME-REPORT.
  481.            WRITE PRT-INCOME-REPORT AFTER 2.
  482.  
  483.            MOVE SPACES TO PRT-INCOME-REPORT.
  484.            MOVE WS-AVG-NUMBER-OF-LINES  TO WS-PRT-AVG-NUMBER-OF-LINES.
  485.            MOVE PRT-AVG-NUMBER-OF-LINES TO PRT-INCOME-REPORT.
  486.            WRITE PRT-INCOME-REPORT AFTER 1.
  487.  
  488.            MOVE SPACES TO PRT-INCOME-REPORT.
  489.            MOVE WS-AVG-PRICE-PER-LINE  TO WS-PRT-AVG-PRICE-PER-LINE.
  490.            MOVE PRT-AVG-PRICE-PER-LINE TO PRT-INCOME-REPORT.
  491.            WRITE PRT-INCOME-REPORT AFTER 1.
  492.  
  493.            MOVE SPACES TO PRT-INCOME-REPORT.
  494.            MOVE WS-TOTAL-INCOME-EARNED  TO WS-PRT-TOTAL-INCOME-EARNED.
  495.            MOVE PRT-TOTAL-INCOME-EARNED TO PRT-INCOME-REPORT.
  496.            WRITE PRT-INCOME-REPORT AFTER 1.
  497.  
  498.            MOVE SPACES TO PRT-INCOME-REPORT.
  499.            WRITE PRT-INCOME-REPORT AFTER 1.
  500.       *
  501.       **********************************************************
  502.       *  This papragraph reads IN-ADVERT-FILE to working storage
  503.       * and sets WS-END-FILE-FLAG, if the end is reached.It also reads
  504.       * IN-NEWSPAPER-NAME and  IN-ADVERT-TYPE to working storage, any
  505.       * errors are indicated in WS-ABORT-READ-FLAG for later DEBUGGING.
  506.       *
  507.        1300-READ-FILE.
  508.            READ IN-ADVERT-FILE INTO WS-ADVERT-FILE 
  509.                    AT END MOVE "S" TO WS-END-FILE-FLAG.
  510.            IF WS-END-FILE-FLAG NOT EQUAL "S"
  511.                 MOVE WS-NEWSPAPER-CODE TO ER-PAPER-CODE
  512.                 READ IN-NEWSPAPER-NAME INTO WS-NEWSPAPER-NAME
  513.                         INVALID KEY MOVE "A" TO WS-ABORT-READ-FLAG.
  514.            IF WS-ABORT-READ-FLAG NOT EQUAL "A"  AND
  515.                 WS-END-FILE-FLAG NOT EQUAL "S"
  516.                 MOVE WS-AD-TYPE-CODE TO ER-IN-AD-CODE
  517.                 READ IN-ADVERT-TYPE INTO WS-ADVERT-TYPE
  518.                         INVALID KEY MOVE "B" TO WS-ABORT-READ-FLAG.
  519.            
  520.       * 
  521.       ***************************************************************
  522.